[Mackerel] ディスク単位で異なる監視閾値を設定してみた
こんばんは、東京オフィスのあしさんです。
Mackerelって、サービスやロール単位でまとめてリソースを管理したり、細かい設定をしなくてもプリセットの監視設定でなんとかなったり、便利で楽だと感じることが多いと思います。
それでもちょっと複雑な設定をしたいって時ありますよね?
たとえば、Windowsサーバの閾値をCドライブ:90%、Eドライブ:95%のようにディスク単位で異なる設定をしたかったり。
そんな要件を想定して、実際にやってみたのでご紹介します。
前提条件
事前にMackerelを利用した監視設定済みの環境が必要です。
以下の設定を行なってMackerel Organizationsの作成
、Mackerel Agentをインストールして監視済みのインスタンスを準備
している前提で、手順を進めます。
実装方法
実装する方法は2パターンあります。
1つ目は、公式チェックプラグイン集に含まれるcheck-disk
を使うパターンです。
OSのディストリビューションやMackerel Agentのバージョンにもよりますが、公式プラグインをインストールし、mackerel-agentのconfigファイルに設定項目を追加することで設定できます。
2つ目は、式による監視
を使うパターンです。1
Makerel独自の関数を利用した式で計算したメトリックに対して監視設定が可能です。
ここまでの説明を聞いただけでは「????」となると思うので、今回はどちらのパターンでも実際に試してみましたのでご紹介します。
やってみた
1. 公式チェックプラグイン集check-diskを利用した監視設定
ディスク容量が90%の場合にWarning、95%の場合にCriticalのアラートを出すように設定します。
この方法は、各監視対象のサーバ上のconfigファイルを編集し、監視設定を追加します。
OSのディストリビューションによってチェックプラグインを別途インストールする必要があったり、設定ファイルのパスが違いますので注意しましょう。
Windows系のOSの場合
公式チェックプラグインはAgentに同梱されているため別途インストールの必要はありません。
C:\Program Files (x86)\Mackerel\mackerel-agent\mackere-agent.conf
ファイルに以下を追記します。
[plugin.checks.disk] command = ["check-disk", "--path", "C:", "--warning", "10%", "--critical", "5%"]
追加後にagentを再起動します
Restart-Service -Name mackerel-agent
Linux系のOSの場合
事前に公式チェックプラグインのインストールが必要なのでやっておきましょう。
/etc/mackerel-agent/mackerel-agent.conf
ファイルに以下を追記します。
[plugin.checks.disk] command = ["check-disk", "--path", "/", "--warning", "10%", "--critical", "5%"]
追加後にagentを再起動します
sudo systemctl restart mackerel-agent
設定後、Host画面からdisk
監視メトリクスが追加されていることが確認できます。(Windows/Linux共通)
2. 式による監視を使った監視設定
こちらも同様に、ディスク容量が90%の場合にWarning、95%の場合にCriticalのアラートを出すように設定します。
こちらの設定は、Mackerel管理コンソールから行います。
サイドバーのMonitors
画面から監視ルールを追加
をクリック。
式による監視
をクリック
監視対象の式
欄に以下を入力します。
divide( host(<MackerelホストID>, filesystem.<ファイルシステム名>.used), host(<MackerelホストID>, filesystem.<ファイルシステム名>.size) ) ## 対象ディスク使用率を、(ホストのディスク使用量) ÷ (ディスクサイズ) で計算しています。
※ MackerelホストID、ファイルシステム名は以下の手順で確認できます。
サイドバーのHosts
画面から、メトリクスを取得する対象のインスタンスをクリックします。
インスタンスの詳細画面から、MackerelホストID、ファイルシステム名を確認できます。
実際に入力してみると、
このようにグラフが自動的に表示されます。
閾値を入力します。(使用率90%の場合、0.9のように指定)
監視ルール名を記載します。
作成
をクリックする。
監視ルール設定の一覧に表示されることを確認してください。
アラートが出た場合、このように表示されます。
結局どっちがいいの?
監視対象が基本的なシングル構成のインスタンスのみの場合は、式による監視を使った監視設定
が良いと思います。
Mackerel管理コンソール上で作業が完結していて、サーバ内のconfigファイルに直接書き込む必要がないので、再設定や設定の追加が容易です。
ですが、この機能は注釈しているように現在正式リリース前の機能なため、その点を気にされる場合は検討する必要がありますね。
一方、監視対象に特殊な構成(Autoscallngを利用しているなど)のインスタンスが含まれる場合は、 公式チェックプラグイン集check-diskを利用した監視設定
を選択する場合があります。
Mackerelのサービス・ロールの構成にもよりますが、Autoscallingを使用している場合は、スケールアウトの度にロールなど監視メトリクス設定を変更する必要があったり現実的ではない場合があります。
その場合は、configファイルに直接設定を書き込んでしまえば、スケールアウト時にも対応できますね。
次回予告
ディスク単位のメトリクスを設定した時に、サービスメトリクスなど別のメトリクスと重複して設定していると、想定通りアラートが上がらないことがあります。
以下のような状態です。
- 監視メトリクスA:ディスク監視閾値を90%に設定
- 監視メトリクスB:ディスク監視閾値を95%に設定
ディスク使用率が91%になった場合、Aではアラート発生しませんが、Bでアラートが発砲されてしまうので、監視メトリクスBは実質的に機能しないことになります。
よく考えれば当たり前の話なのですが、サービスやロールを使用して一律で監視メトリクスの設定をしている環境の場合は起きてしまいがちです。
次回のブログで、その対策について説明したいと思います。
以上、東京オフィスのあしさんでした。